package org.jeecg.modules.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.system.entity.SysEmployee;

import java.util.Map;

/**
 * 员工信息表 Mapper 接口
 */
public interface SysEmployeeMapper extends BaseMapper<SysEmployee> {

    /**
     * 获取员工列表（分页）
     *
     * @param page      分页参数
     * @param employee  查询条件
     * @param departIds 部门ID列表，多个ID用逗号分隔
     * @return 员工分页列表
     */
    IPage<SysEmployee> getEmployeePageList(Page<SysEmployee> page, @Param("employee") SysEmployee employee, @Param("departIds") String departIds);
    
    /**
     * 根据员工编号查询员工信息
     *
     * @param empNo 员工编号
     * @return 员工信息
     */
    SysEmployee getEmployeeByEmpNo(@Param("empNo") String empNo);
    
    /**
     * 根据登录用户名查询员工信息
     *
     * @param username 登录用户名
     * @return 员工信息
     */
    SysEmployee getEmployeeByUsername(@Param("username") String username);
    
    /**
     * 根据部门ID查询员工数量
     *
     * @param departId 部门ID
     * @return 员工数量
     */
    Integer countEmployeeByDepartId(@Param("departId") String departId);
    
    /**
     * 获取指定租户下的最大员工编号
     *
     * @param tenantId 租户ID
     * @return 最大员工编号
     */
    String getMaxEmpNoByTenantId(@Param("tenantId") Integer tenantId);

    /**
     * 根据员工ID获取租户ID
     *
     * @param params 包含empId的参数Map
     * @return 租户ID
     */
    Integer selectTenantIdByEmpId(Map<String, Object> params);
    
    /**
     * 根据角色ID获取员工列表
     *
     * @param page   分页参数
     * @param roleId 角色ID
     * @param empNo  员工编号（可选，用于模糊查询）
     * @return 员工分页列表
     */
    IPage<SysEmployee> getEmployeeByRoleId(Page<SysEmployee> page, @Param("roleId") String roleId, @Param("empNo") String empNo);
} 